package com.glodon.paas.activity.dao.domain;

import java.util.Date;

import com.google.code.morphia.annotations.Entity;
import com.google.code.morphia.annotations.Id;

/**
 * 活动实体类
 * 
 * @author a
 */
@Entity(value = "activityDefinition", noClassnameStored = true)
public class ActivityDefinitionEntity {

    @Id
    // 活动类型：唯一全局，格式必须是 appId(6) + modelId(6) + type(6)
    private Long    activityType;

    // 应用ID:6位
    private Integer appId;

    // 模块ID：6位，具体含义应用自己确定，可能用于条件检索一类活动
    private Integer modelId;

    // 应用自己定义的type:6位
    private Integer type;

    // 活动英文名称：fileUpload
    private String  actionNameEn;

    // 中文活动名称：文件上传
    private String  actionNameCn;

    // 有效期：单位天，0永远
    private Integer period;

    // 简单描述
    private String  description;

    // 默认接收用户(二进制组合): 1参数提供, 2自己, 4通讯录中的人
    private Long    defaultReceiver;

    // 通知渠道(二进制组合)：0不通知，1邮件，2短信
    private Long    noticeChannel;

    // 0不产生活动，1活动只产生给自己，2活动只给他人，3全部
    private Integer status;

    // 活动数据对应的class全名。用于校验模版是否正确
    // private String className;

    // 模版<strong>{actorName}</strong> 上传了 <a href='http://...{itemId}'>{itemName}</a>
    private String  template;
    // 用于模版测试的Activity对象的Json字符串
    private String  testActivityJson;
    // 模版状态 ：0不使用模板，1模版验证通过，2模板验证未通过
    private Integer templateStatus;

    private Date    createTime;

    private Date    updateTime;

    public void resetActivityType() {
        int app = appId == null ? 0 : appId;
        int model = modelId == null ? 0 : modelId;
        int ty = type == null ? 0 : type;

        activityType = app * 1000000 * 1000000L + model * 1000000 + ty;
    }

    public Long getActivityType() {
        return activityType;
    }

    public void setActivityType(Long activityType) {
        this.activityType = activityType;
    }

    public Integer getAppId() {
        return appId;
    }

    public void setAppId(Integer appId) {
        this.appId = appId;
    }

    public Integer getModelId() {
        return modelId;
    }

    public void setModelId(Integer modelId) {
        this.modelId = modelId;
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public String getActionNameEn() {
        return actionNameEn;
    }

    public void setActionNameEn(String actionNameEn) {
        this.actionNameEn = actionNameEn;
    }

    public String getActionNameCn() {
        return actionNameCn;
    }

    public void setActionNameCn(String actionNameCn) {
        this.actionNameCn = actionNameCn;
    }

    public String getTemplate() {
        return template;
    }

    public void setTemplate(String template) {
        this.template = template;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public Integer getPeriod() {
        return period;
    }

    public void setPeriod(Integer period) {
        this.period = period;
    }

    public Long getNoticeChannel() {
        return noticeChannel;
    }

    public void setNoticeChannel(Long noticeChannel) {
        this.noticeChannel = noticeChannel;
    }

    public Long getDefaultReceiver() {
        return defaultReceiver;
    }

    public void setDefaultReceiver(Long defaultReceiver) {
        this.defaultReceiver = defaultReceiver;
    }

    public String getTestActivityJson() {
        return testActivityJson;
    }

    public void setTestActivityJson(String testActivityJson) {
        this.testActivityJson = testActivityJson;
    }

    public Integer getTemplateStatus() {
        return templateStatus;
    }

    public void setTemplateStatus(Integer templateStatus) {
        this.templateStatus = templateStatus;
    }
}
